home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
docs
/
ippon
/
data
/
expl
/
expllite.lzh
/
fxsp2lib.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-11-15
|
2KB
|
98 lines
/* fxsp2lib.c */
#include <stdlib.h>
#include <stdio.h>
typedef struct {
signed short vx; /* 相対座標データ */
signed short vy; /* 相対座標データ */
unsigned short pt; /* スプライトパターンNo. */
unsigned short rv; /* 反転コード */
} SP_WORK;
static FILE *fp;
static int pattern_no;
static int sprite_no;
short fxsp_on (void)
{
if ((fp = fopen ("temp001.obj", "wb")) == NULL) {
printf ("ファイルを書き込めません\n");
return (-1);
}
fprintf (fp, "\nPCG_FILE = ***.sp 256 * 使用する PCG データ\n"
"\n"
"XY_OFFSET = $0000 $0000 * 座標のオフセット\n"
"PT_OFFSET = $0000 * PCGパターンナンバーのオフセット\n"
"OBJ_RV = $0000 * 全体の反転コード\n"
"\n");
pattern_no = 0;
sprite_no = 0;
return (0);
}
static void write_pos (signed short pos)
{
signed short p = pos;
if (p < 0)
fprintf (fp, "-$%04hx ", -p);
else
fprintf (fp, " $%04hx ", p);
return;
}
/* xsp_set_st と置き換えて使うと引き数の構造体を .obj ファイルに書き出す */
short fxsp_set_st (void *sp_work0)
{
SP_WORK *sp_work = (SP_WORK *) sp_work0;
if (!sprite_no) {
fprintf (fp,
"******************************** 複合スプライトパターン %3d ****\n\n"
"No. = NEXT * 複合スプライトのパターンナンバー\n"
" * 左から順に、X Y PT RV (以下同様)\n"
,pattern_no);
}
fprintf (fp, " ");
write_pos (sp_work->vx);
write_pos (sp_work->vy);
fprintf (fp, "$%04x ", sp_work->pt);
fprintf (fp, "$%04x\n", sp_work->rv);
sprite_no++;
return (0);
}
short fxsp_out (void)
{
short s = sprite_no;
fprintf (fp, "\n\n");
pattern_no++;
sprite_no = 0;
return (s);
}
short fxsp_off (void)
{
if (fp != NULL)
fclose (fp);
fp = NULL;
return (0);
}